package com.ssy.lingxi.member.merchant.api.model.vo.paas;

import com.ssy.lingxi.member.merchant.api.handler.annotation.EnableDisableStatusAnno;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Positive;
import javax.validation.constraints.Size;
import java.io.Serializable;

/**
 * 业务平台 - 角色管理接口参数VO
 * @author 万宁
 * @version 2.0.0
 * @date 2020-06-13
 */
public class RoleVO implements Serializable {

    private static final long serialVersionUID = 5074083962887615765L;

    public interface Add {}

    public interface Get {}

    public interface Update {}

    public interface Delete {}

    public interface UpdateStatus {}

    public interface GetButton {}

    /**
     * 角色id
     */
    @Positive(message = "id要大于0", groups = {Get.class, Update.class, Delete.class, UpdateStatus.class, GetButton.class})
    private Long id;

    /**
     * 角色名称
     */
    @NotBlank(message = "角色名称不能为空", groups = {Add.class, Update.class})
    @Size(max = 50, message = "角色名称最长50个字符", groups = {Add.class, Update.class})
    private String roleName;

    /**
     * 角色状态 0-停用 1-启用
     */
    @EnableDisableStatusAnno(message = "状态参数错误 1-启用 0-停用", groups = {UpdateStatus.class})
    private Integer status;

    /**
     * 业务类型名称
     */
    @NotBlank(message = "请输入业务类型", groups = {Add.class, Update.class})
    private String businessTypeName;

    /**
     * 角色类型枚举，定义在RoleTypeEnum中
     */
    @Positive(message = "角色类型枚举要大于0", groups = {Add.class, Update.class})
    private Integer roleTypeEnum;

    /**
     * 会员类型枚举，定义在MemberTypeEnum中
     */
    @Positive(message = "会员类型枚举要大于0", groups = {Add.class, Update.class})
    private Integer memberTypeEnum;

    /**
     * 菜单的Id
     */
    @NotBlank(message = "菜单Id不能为空", groups = {GetButton.class})
    private Long menuId;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getRoleName() {
        return roleName;
    }

    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getBusinessTypeName() {
        return businessTypeName;
    }

    public void setBusinessTypeName(String businessTypeName) {
        this.businessTypeName = businessTypeName;
    }

    public Integer getRoleTypeEnum() {
        return roleTypeEnum;
    }

    public void setRoleTypeEnum(Integer roleTypeEnum) {
        this.roleTypeEnum = roleTypeEnum;
    }

    public Integer getMemberTypeEnum() {
        return memberTypeEnum;
    }

    public void setMemberTypeEnum(Integer memberTypeEnum) {
        this.memberTypeEnum = memberTypeEnum;
    }

    public Long getMenuId() {
        return menuId;
    }

    public void setMenuId(Long menuId) {
        this.menuId = menuId;
    }
}
